home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / WCLASS95.ZIP / CPPFUNC2.SCT < prev    next >
Encoding:
Text File  |  1995-07-16  |  18.7 KB  |  264 lines

  1. // Class: CLASS_NAME
  2.  
  3. //////////////////////////.cpp file/////////////////////////////////////////////////////
  4. #include "$TRUNCATE_EIGHT$CLASS_NAME$.h"                    
  5.  
  6. SELECT_WHEN ATTRIBUTE_IS_STATIC
  7. [ATTRIBUTE_TYPE CLASS_NAME$::$ATTRIBUTE_NAME = ATTRIBUTE_INITIAL_VALUE$; //Static data member initialization]
  8.  
  9. // Functions for class CLASS_NAME
  10. [
  11. //  Function:     OPERATION_NAME
  12. //  Purpose:     OPERATION_COMMENT1
  13. //  Parameters: CPP_OPERATION_PARAMETERS
  14. //  Comments:     OPERATION_COMMENT2
  15. OPERATION_RETURN_TYPE CLASS_NAME::OPERATION_NAME(CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT 
  16. { OPERATION_CODE
  17. }  ] 
  18.  
  19.         //Default constructor alternative to compiler provided default constructor
  20.         //Association object data member pointers initialized to null association object NO_OUTPUT_BEGIN
  21.         //Ensure correct initial values are entered in the Attribute Specification
  22.         //Initialization list has members in the order declared 
  23.         //Enter the const attribute initializer list statement in CLASS_USER3, e.g. ,initialNumber(0) NO_OUTPUT_END
  24. CLASS_NAME::CLASS_NAME ()
  25. SELECT_WHEN ATTRIBUTE_IS_NORMAL [NO_RETURN NO_REPEAT: ATTRIBUTE_NAME(ATTRIBUTE_INITIAL_VALUE),DELETE_LAST_SYMBOL] CLASS_USER3
  26. {   [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  27.     [AGGREGATION_MANY_NAME$Index = 0; //Index for array of 1:M aggregation part objects ]
  28.     [ASSOCIATION_MANY_NAME$Index = 0; //Index for array of 1:M association objects ]
  29.          //Initialization of array of 1:M association objects to null association objects
  30.     [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ]
  31.  
  32.            //Constructor with arguments
  33.            //Update to argument list to initialize base class data members, 
  34.            //e.g. (int aNumber) : BaseClass (aNumber)
  35.            //Enter the const attribute initializer list statement in CLASS_USER3, e.g. ,initialNumber(0)
  36. CLASS_NAME::CLASS_NAME ( SELECT_WHEN ATTRIBUTE_IS_NORMAL [NO_RETURN ATTRIBUTE_TYPE a$ATTRIBUTE_NAME,DELETE_LAST_SYMBOL] ) 
  37. [NO_RETURN NO_REPEAT: BASE_CLASS$() ,DELETE_LAST_SYMBOL] CLASS_USER3
  38. { SELECT_WHEN ATTRIBUTE_IS_NORMAL
  39.   [ATTRIBUTE_NAME = a$ATTRIBUTE_NAME; //Initialization of attributes ]
  40.   [AGGREGATION_MANY_NAME$Index = 0;  //Index for array of 1:M aggregation part objects ]
  41.   [ASSOCIATION_MANY_NAME$Index = 0;  //Index for array of 1:M association objects ]
  42.   [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  43.               //Initialization of array of 1:M association objects to null association objects
  44.   [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ]
  45.  
  46.         //Copy constructor alternative to compiler provided default copy constructor  NO_OUTPUT_BEGIN
  47.         //Copy alternatives for association objects: (1) initialize association object to nullAssociation Object
  48.         //(2) Shallow copy to copy pointers of association objects (3) Deep copy to create new association objects
  49.         //and copy values of association objects
  50.         //Commented out code assigns 1:1 and 1:M association object data member pointers for shallow copy
  51.         //Remove // if you desire to assign pointers  
  52.         ////Enter the const attribute initializer list statement in CLASS_USER3, e.g. ,initialNumber(0) NO_OUTPUT_END    
  53. CLASS_NAME::CLASS_NAME (const CLASS_NAME$& a$CLASS_NAME )
  54. [NO_RETURN NO_REPEAT: BASE_CLASS (a$CLASS_NAME),DELETE_LAST_SYMBOL] CLASS_USER3
  55. {int i = 0;
  56. [ AGGREGATION_MANY_NAME$Index = 0;           //Index for array of 1:M aggregation part objects ]
  57. [ ASSOCIATION_MANY_NAME$Index = 0;           //Index for array of 1:M association objects ]
  58. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;] 
  59. [ AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]  
  60. [ ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]     
  61. [ //ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME; //Commented out shallow copy]
  62. [ for ( i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  63. [ for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; //Initialization of pointers to null association object ]
  64. [ //Commented out shallow copy
  65. [ //for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  66.  
  67.         //Operator= Assignment Operator alternative to compiler provided operator=  NO_OUTPUT_BEGIN
  68.         //Assignment alternatives for association objects: (1) initialize association object to nullAssociation Object
  69.         //(2) Shallow copy to copy pointers to association objects (3) Deep copy to copy value of association objects
  70.         //Commented out code copies pointers for 1:1 and 1:M association object data members for shallow copy NO_OUTPUT_END
  71. CLASS_NAME& CLASS_NAME::operator= (const CLASS_NAME$& a$CLASS_NAME)
  72. { if (this == &a$CLASS_NAME) return *this;
  73.   int i = 0; 
  74. [  BASE_CLASS$::operator= (a$CLASS_NAME);]
  75. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;]
  76. [  AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]
  77. [  ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  78. [  // ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME;//Commented out shallow copy]    
  79. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  80. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ; //Initialization of pointers to null association object ]
  81. [  //for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  82.   return *this;
  83. }
  84.  
  85.       //Operator== Equality Operator NO_OUTPUT_BEGIN
  86.       //No compiler generated operator== generated
  87.       //Comparison alternatives for association objects: (1) Do not compare association objects, (2) Do a shallow comparison
  88.       //to compare pointers of association objects (3) Do a deep comparison to compare the values of association objects
  89.       //Update for 1:M association object data members
  90.       //Change C array to C++ collection for 1:M data members     NO_OUTPUT_END
  91. int CLASS_NAME::operator== (const CLASS_NAME$& a$CLASS_NAME) const
  92. { return (
  93. [ (BASE_CLASS$::operator== (a$CLASS_NAME)) &&]
  94. [     //Equality check for 1:1 association data members for shallow comparison
  95. //( ASSOCIATION_ONE_NAME == a$CLASS_NAME$.$ASSOCIATION_ONE_NAME) &&]
  96.              //Equality check for 1:1 aggregation part data members
  97. [ ( AGGREGATION_ONE_NAME == a$CLASS_NAME$.$AGGREGATION_ONE_NAME) &&]
  98.              //Equality check for 1:M aggregation parts 
  99.              //Update for the correct number of aggregation part objects
  100. [ ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&&
  101.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&&
  102.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&&
  103.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&&
  104. ]
  105.                //Equality check for 1:M association objects for shallow compare 
  106.                //Update for the correct number of associated objects
  107. [//( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&&
  108. //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&&
  109. //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&&
  110. //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&&
  111.                  //Equality check for attribute data members
  112. SELECT_WHEN ATTRIBUTE_IS_NORMAL [(ATTRIBUTE_NAME == a$CLASS_NAME$.$ATTRIBUTE_NAME) &DELETE_LAST_SYMBOL&DELETE_LAST_SYMBOL]
  113. );
  114. }
  115.  
  116.                   //Operator<< extraction for cout  NO_OUTPUT_BEGIN
  117.                   //Change C array to C++ collection for 1:M data members  NO_OUTPUT_END     
  118. ostream& operator<< (ostream& os, const CLASS_NAME$& a$CLASS_NAME)
  119. { int i = 0;
  120. [  os << (BASE_CLASS &) a$CLASS_NAME;]
  121.   os << "Object Attribute Values - Class CLASS_NAME" << endl;
  122. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  123. SELECT_WHEN ATTRIBUTE_IS_CONSTANT [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  124. SELECT_WHEN ATTRIBUTE_IS_STATIC [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  125. [  os << "  AGGREGATION_ONE_NAME$: " << a$CLASS_NAME$.$AGGREGATION_ONE_NAME << endl;]
  126. [  if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) os << " ASSOCIATION_ONE_NAME$: " << *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME << endl;
  127. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) os << "  AGGREGATION_MANY_NAME$: " << a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]  << endl; ]
  128. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  129.   { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] != &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS)  os << " ASSOCIATION_MANY_NAME$: " << *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]  << endl;
  130.   } ] 
  131.   return os;
  132. }
  133.  
  134.                   //Operator>> insertion for cin  NO_OUTPUT_BEGIN
  135.                   //Change C array to C++ collection for 1:M data members  NO_OUTPUT_END     
  136. istream& operator>> (istream& is, CLASS_NAME$& a$CLASS_NAME)
  137. { int i = 0;
  138. [  is >> (BASE_CLASS &) a$CLASS_NAME;]
  139.   cout << "\nEnter Object Attribute Values or 0 - Class CLASS_NAME"; 
  140. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ cout << "\nEnter ATTRIBUTE_NAME : " << endl; 
  141.   is >> a$CLASS_NAME$.$ATTRIBUTE_NAME;]        
  142. [  is >> a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]
  143. [  if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) is >> *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME ; ]
  144. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) is >> a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  145. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  146.   { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]!= &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS)  is >> *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ;
  147.   } ]
  148.   return is;
  149. }
  150.  
  151. [                    //Remove function for 1:1 association object data member
  152.                       //Warning delete ASSOCIATION_ONE_NAME object if dynamic object
  153. void CLASS_NAME::remove$ASSOCIATION_ONE_CLASS$() //throw (string)
  154. { string no$ASSOCIATION_ONE_CLASS$;
  155.   if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) throw no$ASSOCIATION_ONE_CLASS$;
  156.   else ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS;  
  157. } ]  
  158. [                    //Get accessor function for 1:M association object data member  NO_OUTPUT_BEGIN
  159.                      //Change C array to C++ collection class with iterator
  160.                      //Returns the first 1:M association object pointer in the array   NO_OUTPUT_END
  161. const ASSOCIATION_MANY_CLASS$* CLASS_NAME::getFirst$ASSOCIATION_MANY_CLASS$() const //throw (string)
  162. { string ASSOCIATION_MANY_CLASS$CollectionEmpty;
  163.   if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty;
  164.   else return ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL];
  165. }  ]
  166. [                    //Exists function for 1:1 association object data member
  167. int CLASS_NAME::exists$ASSOCIATION_ONE_CLASS$() const
  168. { if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) return 0; else return 1; 
  169. }  ] 
  170. [                    //Exists function with argument for 1:1 association object data member
  171. int CLASS_NAME::exists$ASSOCIATION_ONE_CLASS ($ASSOCIATION_ONE_CLASS$* const a$ASSOCIATION_ONE_CLASS$) const
  172. { if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) return 0;
  173.   else if ( *$ASSOCIATION_ONE_NAME == *a$ASSOCIATION_ONE_CLASS ) return 1; 
  174.   else return 0;
  175. }  ]  
  176. [                     //Get accessor function for 1:M aggregation collection  NO_OUTPUT_BEGIN
  177.                       //Change C array to C++ collection class with iterator
  178.                       //Returns pointer to the 1st element of the C array   NO_OUTPUT_END
  179. const AGGREGATION_MANY_CLASS$* CLASS_NAME::get$AGGREGATION_MANY_CLASS$Collection () const 
  180. { return AGGREGATION_MANY_NAME ;
  181. }  ] 
  182. [                    //Set accessor function for 1:M aggregation collection   NO_OUTPUT_BEGIN
  183.                      //Change C array to C++ collection class with iterator
  184.                      //Parameter is pointer to the first element of the C array   NO_OUTPUT_END
  185. void CLASS_NAME::set$AGGREGATION_MANY_CLASS$Collection ($AGGREGATION_MANY_CLASS$* const a$AGGREGATION_MANY_CLASS$Collection)
  186. {  for (int i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = a$AGGREGATION_MANY_CLASS$Collection LITERAL_SYMBOL[ i LITERAL_SYMBOL];
  187. }  ]
  188. [                    //Exists function for 1:M aggregation part data member   NO_OUTPUT_BEGIN
  189.                      //Change C array to C++ collection class with iterator   NO_OUTPUT_END
  190. int CLASS_NAME::exists$AGGREGATION_MANY_CLASS (const AGGREGATION_MANY_CLASS$& a$AGGREGATION_MANY_CLASS$) const 
  191. { for (int i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++)
  192.   {  if ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] == a$AGGREGATION_MANY_CLASS ) return 1;
  193.   }
  194. return 0;
  195. }  ]
  196. [                    //Get accessor function for 1:M aggregation part data member  NO_OUTPUT_BEGIN
  197.                      //Returns the first 1:M aggregation part in the array
  198.                      //Change C array to C++ collection class with iterator    NO_OUTPUT_END
  199. const AGGREGATION_MANY_CLASS$& CLASS_NAME::getFirst$AGGREGATION_MANY_CLASS$() const 
  200. { return AGGREGATION_MANY_NAME LITERAL_SYMBOL[ 0 LITERAL_SYMBOL] ;    
  201. }  ]
  202. [                    //Get accessor function for 1:M association collection  NO_OUTPUT_BEGIN
  203.                      //Change C array to C++ collection class with iterator
  204.                      //Returns pointer to 1st element of the C array    NO_OUTPUT_END
  205. const ASSOCIATION_MANY_CLASS$* CLASS_NAME::get$ASSOCIATION_MANY_CLASS$Collection() const 
  206. { return *$ASSOCIATION_MANY_NAME;
  207. } ] 
  208. [                   //Set accessor function for 1:M association collection  NO_OUTPUT_BEGIN
  209.                     //Change C array to C++ collection class with iterator
  210.                     //Parameter is pointer to 1st element of the C array   NO_OUTPUT_END
  211. void CLASS_NAME::set$ASSOCIATION_MANY_CLASS$Collection ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$Collection)
  212. { int i = 0;
  213.   for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ;
  214.   for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = &a$ASSOCIATION_MANY_CLASS$Collection LITERAL_SYMBOL[ i LITERAL_SYMBOL];
  215. }  ]
  216. [                  //Add function for 1:M association object data member  NO_OUTPUT_BEGIN
  217.                    //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  218. void CLASS_NAME::add$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$) //throw (string) 
  219. { string ASSOCIATION_MANY_CLASS$CollectionFull;
  220.   if ( ASSOCIATION_MANY_NAME$Index == maxNumberOf$ASSOCIATION_MANY_CLASS$s) throw ASSOCIATION_MANY_CLASS$CollectionFull;
  221.   else
  222.   { ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL] = a$ASSOCIATION_MANY_CLASS ;
  223.     ASSOCIATION_MANY_NAME$Index++;
  224.   }
  225. }  ]
  226. [                  //Remove function for 1:M association object data member
  227.                    //Warning delete ASSOCIATION_MANY_NAME object if dynamic object NO_OUTPUT_BEGIN
  228.                     //Change C array to C++ collection class with iterator     NO_OUTPUT_END
  229. void CLASS_NAME::removeLast$ASSOCIATION_MANY_CLASS ( ) //throw (string)
  230. {  string ASSOCIATION_MANY_CLASS$CollectionEmpty;
  231.    if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty;
  232.    else
  233.    { ASSOCIATION_MANY_NAME$Index--; 
  234.      ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ;
  235.    }
  236. } ]  
  237. [                      //Remove all function for 1:M association object data member
  238.                        //Warning delete ASSOCIATION_MANY_NAME object if dynamic object  NO_OUTPUT_BEGIN
  239.                         //Change C array to C++ collection class with iterator    NO_OUTPUT_END
  240. void CLASS_NAME::removeAll$ASSOCIATION_MANY_CLASS$s ( ) //throw (string)
  241. { string ASSOCIATION_MANY_CLASS$CollectionEmpty;
  242.   if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty;
  243.   for (int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; 
  244. } ] 
  245. [                       //Exists function for 1:M association object data member  NO_OUTPUT_BEGIN
  246.                         //Change C array to C++ collection class with iterator    NO_OUTPUT_END
  247. int CLASS_NAME::exists$ASSOCIATION_MANY_CLASS$() const 
  248. { if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == &null$ASSOCIATION_MANY_CLASS ) return 0; else return 1; 
  249. }  ] 
  250. [                       //Exists function for 1:M association object data member   NO_OUTPUT_BEGIN
  251.                         //Change C array to C++ collection class with iterator     NO_OUTPUT_END
  252. int CLASS_NAME::exists$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$) const
  253. { if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ 0 LITERAL_SYMBOL] == &null$ASSOCIATION_MANY_CLASS ) return 0; 
  254.   for (int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  255.   {  if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] == a$ASSOCIATION_MANY_CLASS ) return 1;
  256.   }
  257.   return 0;
  258. }  ] 
  259.  
  260.